Golang
切片(Slice)
我看很多中文的教學都是翻切片,我也不知道是不是正確的說法,總之也附上英文的單詞了,就GOGO吧!
還記得前一篇宣告陣列的時候,我們會使用var n [10]int 給陣列一個長度,跟某些語言不同的是 陣列一旦宣告後就無法改變長度了,所以此時如果有這個需求的話,就需要試看看Slice
如果忘記的,代表前篇連打三次還是不夠的
Slice是可以動態改變長度的,make() 函数来創建切片並且使用append來增加
package main
import "fmt"
func main() {
/*
var n [10]int
var i int
//這裡會出事,因為我們宣告10,但給了11
//runtime error: index out of range [10] with length 10
for i = 0; i < 11; i++ {
n[i] = i
fmt.Printf("this is slice %d \n" , n[i])
}
*/
fmt.Printf("this is slice \n")
slice := make([]int, 5)
for i := 0; i < len(slice); i++ {
slice[i] = i
fmt.Printf("this is slice %d \n" , slice[i])
}
slice = append(slice, 5, 6, 7)
fmt.Printf("this is slice %d \n" , slice[5])
}
Len()與cap()
len()是長度,cap() 是最大長度
fmt.Println(len(slice))
fmt.Println(cap(slice))
宣告時,slice :=make([]int,len,cap)
Copy
copy(slice2, slice)與slice2:= slice 這兩者是不同的唷,可以玩看看之間的差異。
試看看
copy(slice2, slice)
slice = append(slice, 5, 6, 7)
跟
slice2:= slice
slice = append(slice, 5, 6, 7)
這樣輸出看slice2,看會有怎樣的結果
Map (集合)
package main
import "fmt"
func main() {
fmt.Println("try map")
//建立一個型別為 map 的變數m,其中的 key 都會是 string,value 都是 int
m := make(map[string]int)
m["Tom"] = 16
m["Many"] = 20
for k, v := range m {
fmt.Println(k, "value is", v)
}
}
Len與delete
顧名思義,一樣可以取得長度,如果要刪除的話就使用delete就可以囉~
fmt.Println(len(m)) // 2
delete(m, "Tom")
fmt.Println(len(m)) // 1
另外golang還有一個很類似的東西是Structure,就看未來有沒有時間補了(大致上就是可以裡面的屬性可以不同)
快樂的時間總是快得特別快 又到了說掰的時候啦!